/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package vista;

import com.atomcorp.modelo.Empresa;
import com.atomcorp.servicio.EmpresaServicio;
import com.atomcorp.servicio.UsuarioServicio;
import java.util.logging.Level;
import java.util.logging.Logger;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.fxml.JavaFXBuilderFactory;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

/**
 *
 * @author MANU
 */
public class SistemaFacturacion extends Application {
    private Stage stage;
    private Empresa empresa;
    private static SistemaFacturacion instance;
    
    private UsuarioServicio usuarioServicio;
    private EmpresaServicio empresaServidor;
    
    
    public SistemaFacturacion() {
//        usuarioActual = new Usuario();
        instance = this;
    }

    public static SistemaFacturacion getInstance() {
        return instance;
    }

    public static void main(String[] args) {
        launch(args);
    }
    
    @Override
    public void start(Stage primaryStage) {
        try {
            stage = primaryStage;
            stage.setResizable(false);
            stage.setTitle("Sistema Manejo Documental");
            iniciarLogin();
            stage.show();
        } catch (Exception e) {
            Logger.getLogger(SistemaFacturacion.class.getName()).log(Level.SEVERE, null, e);
        }
    }
    
     private void iniciarLogin() {
        try {
            replacePlantalla("login.fxml");
        } catch (Exception ex) {
            Logger.getLogger(SistemaFacturacion.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
     public boolean userLogging(String userId, String password) {
        usuarioServicio = new UsuarioServicio();
        if (usuarioServicio.verificarUsuario(userId, password) != null) {
//            usuarioActual = servicioUsuario.verificarUsuario(userId, password);
            pantallaInicio();
            return true;
        } else {
            return false;
        }
    }
     
    public void pantallaInicio() {
        try {
            replacePlantalla("inicio.fxml");
        } catch (Exception ex) {
            Logger.getLogger(SistemaFacturacion.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
     
    public void pantallaAdministracion() {
        try {
            replacePlantalla("administrar.fxml");
        } catch (Exception ex) {
            Logger.getLogger(SistemaFacturacion.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
    public void pantallaUsuarios() {
        try {
            replacePlantalla("administrar.fxml");
        } catch (Exception ex) {
            Logger.getLogger(SistemaFacturacion.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
    public void pantallaClientes() {
        try {
            replacePlantalla("administrarClientes.fxml");
        } catch (Exception ex) {
            Logger.getLogger(SistemaFacturacion.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
    public void pantallaCatalogos() {
        try {
            replacePlantalla("administrarCatalogos.fxml");
        } catch (Exception ex) {
            Logger.getLogger(SistemaFacturacion.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
    public void pantallaCatalogosDetalle() {
        try {
            replacePlantalla("administrarCatalogosDetalle.fxml");
        } catch (Exception ex) {
            Logger.getLogger(SistemaFacturacion.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
    public void pantallaProductos() {
        try {
            replacePlantalla("administrar.fxml");
        } catch (Exception ex) {
            Logger.getLogger(SistemaFacturacion.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
    public void pantallaFactura() {
        try {
            empresaServidor = new EmpresaServicio();
            if(empresaServidor.obtenerEmpresa()!= null){
                setEmpresa(empresaServidor.obtenerEmpresa());
            }
            replacePlantalla("factura.fxml");
        } catch (Exception ex) {
            Logger.getLogger(SistemaFacturacion.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
    public void pantallaReportes() {
        try {
            replacePlantalla("administrar.fxml");
        } catch (Exception ex) {
            Logger.getLogger(SistemaFacturacion.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
     private Parent replacePlantalla(String fxml) throws Exception {
        Parent page = (Parent) FXMLLoader.load(SistemaFacturacion.class.getResource(fxml), null, new JavaFXBuilderFactory());
        Scene scene = stage.getScene();
        stage.setResizable(false);
        stage.setTitle("Sistema de Facturación");
        if (scene == null) {
            scene = new Scene(page);
            stage.setScene(scene);
        } else {
            stage.getScene().setRoot(page);
        }
        stage.sizeToScene();
        return page;
    }

    /**
     * @return the empresa
     */
    public Empresa getEmpresa() {
        return empresa;
    }

    /**
     * @param empresa the empresa to set
     */
    public void setEmpresa(Empresa empresa) {
        this.empresa = empresa;
    }
}
